package br.com.revenda.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.revenda.conexao.conectionFactory;
import br.com.revenda.modelo.Venda;

public class VendaDAO {
	
	Connection con;
	
	public VendaDAO(){
		con=new conectionFactory().getConnection();
	}	
	public void salvar(Venda  v , String d, double vt , double vu){
		String sql = "insert into venda (qtdVedido, formaPg , valorTotal ,  idProduto , idCliente , idFuncionario ,statusPg , dataPed , valorUniVenda)values(?,?,?,?,?,?,?,?,?)";
		try {
			PreparedStatement  pstm = con.prepareStatement(sql);
			
			pstm.setInt(1, v.getQtdVedido());
			pstm.setString(2, v.getFormaPg());
			pstm.setDouble(3, vt);
			pstm.setInt(4, v.getIdProduto());
			pstm.setInt(5, v.getCliente().getIdCliente());
			pstm.setInt(6, v.getIdFuncionario());
			pstm.setString(7, "Aberta");
			pstm.setString(8, d);
			pstm.setDouble(9, vu);
			pstm.execute();
			pstm.close();
			con.close();			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	
	
	
	
	
	public List<Venda> listaVendas(){
		List<Venda> lisVen = new ArrayList<Venda>();
		String sql = "select * from venda INNER JOIN produto ON produto.idProduto = venda.idProduto  " +
				"INNER JOIN cliente ON cliente.idCliente = venda.idCliente " +
				"INNER JOIN funcionario ON funcionario.idFuncionario = venda.idFuncionario ";
			
		try {
			PreparedStatement pstm = con.prepareStatement(sql);
			ResultSet rs = pstm.executeQuery();
			
			while(rs.next()){
				Venda vd = new Venda();
				vd.setQtdVedido(rs.getInt("qtdVedido"));
				vd.setFormaPg(rs.getString("formaPg"));
				vd.setValorTotal(rs.getDouble("valorTotal"));
				vd.setIdProduto(rs.getInt("idProduto"));
				vd.setIdCliente(rs.getInt("idCliente"));
				vd.setIdFuncionario(rs.getInt("idFuncionario"));
				vd.setStatusPg(rs.getString("statusPg"));
				vd.getCliente().setNome(rs.getString("nome"));
				vd.getCliente().setFone(rs.getString("fone"));
				vd.getProduto().setProduto(rs.getString("produto"));
				vd.getProduto().setValorUniVenda(rs.getDouble("valorUniVenda"));
				vd.getFuncionario().setNome(rs.getString("nomeFuncionario"));
				vd.setDataPed(rs.getString("dataPed"));
				lisVen.add(vd);				
			}
				rs.close();
				pstm.close();
				con.close();			
		} catch (SQLException e) {
			e.printStackTrace();
		}	
		
		return lisVen;
	} 
	
	
	
	
	
	
	
	
	
	
	

}
